Mobile Legends: Bang Bang is a MOBA game (Multiplayer online battle arena) for mobile devices with Android and iOS developed by Shanghai Moonton. The game was originally released in Asia on 11th of June 2016.

In the game there are 2 opposing teams consisting of 5 players each. There are around 90 champions (character) to choose from. Each character is different and may be used for different purposes depending on their skills and abillities. In that way one can distinguish mages, assasins and some more types of champions. Main task is to destroy enemies’ defence towers resulting in concquering their base (yup, it’s very boring but somehow very popular).

The game was getting more and more attention in Poland for a couple of years now. The graph below presents interest over time for google query “Mobile Legends” and “MOBA” in Poland. As you can see around 2017 there was a hugh increase in popularity of the game while interest in MOBA games in general was falling down gradually in past 5 years. However in March and April 2020 they experienced a rapid renaissance. We can probably associate it with a lockdown caused by COVID-19 outbreak.

As stated above there are several types of characters in that game so we will try to label them based on their characteristics. In order to do so we are going to implement Principal Component Analysis to reduce dimentionallity and then k-means method to cluster them. Although the labels are known such an analysis may be helpful for maintaining characters’ skill sets in a balance way.

Data description

First of all let’s have a look on how our data looks like. In the table below you can find all characters in alphabetical order.

One important remark is although the list below present all playable characters right now we are going to consider it as sample since the characters’ set is being constantly updated with new characters - in that way statistical inference can be justified.

HERO MV_SPD MGC_DFN MANA HP_RGN P_ATK P_DFN HP ATK_SPD MANA_RGN ROLE SPECIALLY
Akai 260 10 422 42 115 24 2769 0.8500 12 TK Initiator
Aldous 260 10 405 49 129 21 2718 0.8360 18 FT Push
Alice 240 10 493 36 114 21 2573 0.8000 18 MG Charge
Alpha 260 10 453 39 121 20 2646 0.9160 31 FT Charge
Alucard 260 10 0 39 123 21 2821 0.9000 0 FT Charge
Angela 240 10 515 34 115 15 2421 0.7920 18 SP Regen
Argus 260 10 0 40 124 21 2628 0.9160 0 FT Charge
Aurora 245 10 750 34 110 17 2501 0.8000 23 MG Crowrd Control
Badang 255 10 0 40 119 23 2708 0.9080 0 FT Charge
Balmond 260 10 0 47 119 25 2836 0.8500 0 FT Charge
Bane 260 10 433 42 117 23 2559 0.8500 12 FT Push
Belerick 250 10 450 42 110 15 2719 0.8100 12 TK Regen
Bruno 240 10 439 30 128 17 2522 0.8500 15 MM Reap
Change 240 10 505 34 115 16 1301 0.8080 21 MG Reap
Chou 260 10 0 39 121 23 2708 0.8840 0 FT Charge
Claude 240 10 450 40 97 14 2370 0.8260 16 MM Reap
Clint 240 10 450 36 115 20 2530 0.8420 15 MM Burst
Cyclops 240 10 500 38 112 18 2521 0.8000 20 MG Damage
Diggie 250 10 490 36 115 16 2351 0.8000 20 SP Crowrd Control
Dyrroth 265 10 0 41 117 22 2758 0.9160 0 FT Charge
Esmeralda 240 10 502 36 114 21 2573 0.8000 20 MG Regen
Estes 240 10 545 36 120 13 2221 0.8000 18 SP Regen
Eudora 250 10 468 38 112 19 2524 0.8000 16 MG Burst
Fanny 265 10 0 33 126 19 2526 0.8940 0 ASS Charge
Faramis 245 10 500 34 118 20 2543 0.7840 19 SP Initiator
Franco 260 10 440 46 116 25 2709 0.8260 10 TK Initiator
Freya 260 10 462 49 109 22 2801 0.8760 14 FT Charge
Gatotkaca 260 10 420 42 120 20 2629 0.8180 12 TK Crowrd Control
Gord 240 10 570 32 110 13 2478 0.7720 25 MG Damage
Granger 240 10 0 27 110 15 2490 0.8180 0 MM Reap
Grock 260 10 430 42 135 21 2819 0.8100 12 TK initiator
Guineveree 260 10 0 39 126 18 2528 0.9180 0 MG Charge
Gusion 260 10 460 39 119 18 2578 0.8920 16 ASS Charge
Hanabi 245 10 390 30 105 17 2510 0.8500 15 MM Regen
Hanzo 260 10 0 35 118 17 2594 0.8700 0 ASS Reap
Harith 240 10 490 36 114 19 2701 0.8400 18 MG Charge
Harley 240 10 490 36 114 19 2501 0.8480 18 MG Burst
Hayabusa 260 10 0 37 117 17 2629 0.8540 0 ASS Charge
Helcurt 255 10 440 35 121 17 2599 0.8700 16 ASS Charge
Hilda 260 10 0 42 123 24 2789 0.8420 0 FT Regen
Hylos 260 10 430 92 105 17 3309 0.8260 12 TK Regen
Irithel 260 10 438 35 118 17 2540 0.8260 15 MM Reap
Jawhead 255 10 430 39 119 24 2778 0.9000 16 FT Charge
Johnson 255 10 0 42 112 27 2809 0.8260 12 TK Crowrd Control
Kadita 240 10 495 36 105 18 2491 0.8000 18 MG Burst
Kagura 240 10 519 35 118 19 2556 0.8160 21 MG Damage
Kaja 270 10 400 52 120 16 2609 0.8420 12 SP Initiator
Karina 260 10 431 29 121 20 2633 0.9000 16 ASS Charge
Karrie 240 10 440 40 120 17 2578 0.8396 15 MM Reap
Khufra 255 10 460 47 117 19 2859 0.7860 15 TK Crowrd Control
Kimmy 245 10 100 40 104 22 2450 0.8260 0 MM Damage
Lancelot 260 10 450 35 124 16 2549 0.8700 16 ASS Charge
Lapu - Lapu 260 10 0 35 119 21 2628 0.9000 16 FT Charge
Layla 240 10 424 27 130 15 2500 0.8500 14 MM Reap
Leomord 240 10 0 35 126 21 2738 0.8440 0 FT Push
Lesley 240 10 0 36 131 14 2490 0.8260 0 MM Reap
Lolita 260 10 480 48 115 27 2679 0.7860 12 TK Crowrd Control
Lunox 250 10 540 34 115 15 2521 0.8080 23 MG Damage
Martis 260 10 405 35 128 25 2738 0.8680 16 FT Reap
Minotaur 260 10 0 44 123 18 2709 0.7300 0 TK Crowrd Control
Minsitthar 260 10 380 37 121 23 2698 0.8520 16 FT Initiator
Miya 240 10 445 30 129 17 2524 0.8500 15 MM Reap
Moscov 240 10 420 32 125 16 2455 0.8140 15 MM Push
Nana 250 10 510 34 115 17 2501 0.8640 18 SP Poke
Natalia 260 10 486 35 121 18 2589 0.8860 18 ASS Charge
Odette 240 10 495 34 105 18 2491 0.8000 23 MG Burst
Pharsa 240 10 490 34 109 15 2421 0.7904 18 MG Damage
Rafaela 245 10 545 36 117 15 2441 0.7920 23 SP Regen
Roger 240 10 450 36 128 22 2730 0.8420 15 FT Reap
Ruby 260 10 430 30 114 23 2859 0.8580 14 FT Crowrd Control
Saber 260 10 443 35 118 17 2599 0.8700 16 ASS Charge
Selena 240 10 490 34 110 15 2401 0.8040 18 ASS Reap
Sun 260 10 400 41 114 23 2758 0.9160 16 FT Charge
Terizla 255 10 430 54 129 19 2728 0.8000 21 FT Damage
Thamuz 250 10 0 37 107 22 2758 0.8440 0 FT Reap
Tigreal 260 10 450 42 112 25 2890 0.8260 12 TK Crowrd Control
Uranus 260 10 455 32 115 20 2489 0.8340 12 TK Regen
Vale 250 10 490 34 115 15 2401 0.8000 21 MG Crowrd Control
Valir 245 10 495 34 105 18 2516 0.8000 18 MG Burst
Vexana 245 10 490 38 112 17 2481 0.8000 20 MG Poke
Yi Sun-Shin 250 10 438 36 124 18 2520 0.8580 15 MM Reap
Zhask 240 10 490 34 107 15 2401 0.8000 20 MG Push
Zilong 265 10 405 35 123 25 2689 0.9640 16 FT Charge

One important thing we should be interested in is the variability of champions characteristics. Below you can see the coefficient of variation (in %).

MV_SPD MGC_DFN MANA HP_RGN P_ATK P_DFN HP ATK_SPD MANA_RGN
3.68 0 55.7 20.9 6.19 17.79 8.22 5.02 56.95

The variabiliy of mana and mana regeneration exeeds 50% whereas for health points regeneration and armor it’s about 20%. We will have to check the data for outliers as those values might be inflated for instance just by a single observation. Rest of the variables vary just a bit (under 10%). The value for magic resistance is constant for every character so we are going to drop that variable in further analysis.

Now let’s look for some possible relationships and check distributions of the variables.

We can see some relationships - f.e. mana vs. mana regeneration and health points vs. armor and many more - we are going to investigate them soon.

There are some outliers - note a champion whose health point regeneration ability is almost 3 times more powerful than the mean for the sample. We can also see a champion whose health points ability is about 2 times weaker than the average. Let’s find out who are those people.

HERO MV_SPD MANA HP_RGN P_ATK P_DFN HP ATK_SPD MANA_RGN ROLE SPECIALLY
Hylos 260 430 92 105 17 3.309 0.826 12 TK Regen
Change 240 505 34 115 16 1.301 0.808 21 MG Reap

For the sake of analysis we are going to remove both of them from our “sample”.

Density functions for variables like movement speed, mana and mana regenerations seem to be bimodal - it is clear sign there are some subpopulations in our “sample” so it is reasonable to conduct cluster analysis.

We can check the correlations and their significance - just for fun since Simson paradox might be present.